/*
 * Copyright [2009] [Marcin Rzeźnicki]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
 */
package mr.go.yaxc;

/**
 * Thrown when xml file containing configuration could not be processed. It
 * contains location in xml document where problem occured
 * 
 * @author Marcin Rzeźnicki
 * 
 */
public class ConfigurationFileError extends ConfigurationError {

    private static final long serialVersionUID = -3722472557676933668L;
    private Integer column;
    private String file;
    private Integer line;

    public ConfigurationFileError(String file, int line, int column,
                                  Throwable cause) {
        super(file + " at " + line + ':' + column,
              cause);
        this.file = file;
        this.line = line;
        this.column = column;
    }

    public ConfigurationFileError(String file, Throwable cause) {
        super(file,
              cause);
        this.file = file;
    }

    /**
     *
     * @return number of column in xml document where problem occured, or null
     *         if not set
     */
    public Integer getColumn() {
        return column;
    }

    /**
     *
     * @return URL of xml document
     */
    public String getFile() {
        return file;
    }

    /**
     *
     * @return number of line in xml document where problem occured, or null if
     *         not set
     */
    public Integer getLine() {
        return line;
    }
}
